declaration simply identifies the thing so the compiler is not confused. The personnel _rec struct expression discussed earlier* may be thought of as "declaring" the types of its members, since no space is yet allocated for these variables. However, we say the struct expression "defines" the new personnel_rec type by describing its structure.
When a variable is declared in the body of a function (block scope), it has the AUTOMATIC storage class by default. Space for such a variable is automatically allocated upon declaration - meaning that the declaration also serves as a definition - and deallocated upon exit from this function. If the function is called again at a later time, the value contained in this variable is generally NOT the value remaining after the previous call. (The declarations of some automatic variables may be preceded with the 'register' specifier. This may speed access by using one of the machine's high-speed registers instead of standard memory. The number of registers available and the data types allowed are machine-dependent. Standard memory will be used if no appropriate register is available.)
When a variable is declared outside the body of a function (file scope), it has the STATIC storage class by default. Space for such a variable is allocated at the start of